/**
 * Project of Vehicle Routing Problem with Time Windows implements 
 * some of well-known algorithms for solving VRPTW and presents new 
 * one.
 *
 * @author Michal Drobny  
 */

package logic.algorithm;

import logic.route.Cycle;
import logic.route.Route;

/**
 * Represents the result of algorithm for VRP. Contains the array of cycles in
 * route where the algorithm was, the state of algorithm computation and the route.
 * 
 * @author Michal Drobny
 * @date 18.10.2014
 */
public class AlgorithmResult {

	private final AlgorithmState algorithmState;
	private final Cycle[] cycles;
	private final Route route;

	/**
	 * Constructor.
	 * 
	 * @param algorithmState
	 *            The state of algorithm
	 * @param cycles
	 *            The cycles in current route
	 * @param route
	 *            The route
	 */
	public AlgorithmResult(AlgorithmState algorithmState, Cycle[] cycles,
			Route route) {
		super();
		this.algorithmState = algorithmState;
		this.cycles = cycles;
		this.route = route;
	}

	/**
	 * @return the algorithmState
	 */
	public AlgorithmState getAlgorithmState() {
		return algorithmState;
	}

	/**
	 * @return the cycles
	 */
	public Cycle[] getCycles() {
		return cycles;
	}

	/**
	 * @return the route
	 */
	public Route getRoute() {
		return route;
	}
}